/////////////////////////////////////////////////////////////////////////////
/*/	
 *	Creator:		Joshua C. Rouzer
 *	Title:			
 *	Last Edited:	06/11/2013
 *	Summary:		
/*/
/////////////////////////////////////////////////////////////////////////////
#ifndef CTEAM_H
#define CTEAM_H
#include "PlayerShip.h"
#include "BaseUnit.h"
#include "Listener.h"
#include "DefenseStruct.h"
#include "Base.h"
#include <vector>
class CTeam : public CListener
{
private:
	int m_nTeamID;
	CPlayerShip* m_cPlayer;
	CBase*		 m_cBase;
	int m_nScore;
	int m_nControlScheme;
	bool m_bIsAI;
	std::vector<CBaseUnit*> m_vPath1Units;
	std::vector<CBaseUnit*> m_vPath2Units;
	std::vector<CBaseUnit*> m_vPath3Units;

	std::vector<CDefenseStruct*> m_vPath1Gates;
	std::vector<CDefenseStruct*> m_vPath2Gates;
	std::vector<CDefenseStruct*> m_vPath3Gates;
			
public:
	CTeam( bool TeamOne );
	~CTeam();

	void Update( float fDT );
	void Render( void );

	void AddUnit(int path, CBaseUnit* unit);
	void RemoveUnit(int path, CBaseUnit* unit);
	void AddBarricade(int path, CDefenseStruct* barr);
	void RemoveBarricade(int path, CDefenseStruct* barr);
	void ModifyScore(int change);
	virtual void HandleEvent( Event* pEvent ) override;

	void SetTeamID(int ID);
	int GetTeamID();
	void SetPlayerShip(CPlayerShip* player);
	CPlayerShip* GetPlayerShip();
	void SetBase(CBase* base);
	CBase* GetBase();
	void SetControlScheme(int scheme);
	int GetScore();
	void SetIsAI(bool AI);
	bool GetIsAI();

	std::vector<CBaseUnit*>& GetPath1Units( void );
	std::vector<CBaseUnit*>& GetPath2Units( void );
	std::vector<CBaseUnit*>& GetPath3Units( void );

	std::vector<CDefenseStruct*>& GetPath1Gates( void );
	std::vector<CDefenseStruct*>& GetPath2Gates( void );
	std::vector<CDefenseStruct*>& GetPath3Gates( void );
	};
#endif